package com.example.webview;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;


//TODO webView控件  加载网页数据
/*
      1、基本的使用

      2、控制WebView加载
 */

public class MainActivity extends AppCompatActivity {

    private WebView webView;
    private ImageView imageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main );

        webView = (WebView) findViewById(R.id.webView);

        imageView = (ImageView) findViewById(R.id.image);

        //设置WebView支持javaScript
        WebSettings settings = webView.getSettings();

        settings.setJavaScriptEnabled(true);


        //HTML中js调用安卓中的代码中的对象
        //将一个类的对象 传递给WebView的Window内容 提供内部的html/js调用
        //参数1 传递的对象
        //参数2 别称
        webView.addJavascriptInterface(new MyClass(this),"xiao");



        //设置WebViewClient
        webView.setWebViewClient(new MyWebViewClient());

        //可以获取网站的logo 获取网站的加载进度
        webView.setWebChromeClient(new MyChromeClient());

        //加载网络页面
//        webView.loadUrl("http://www.baidu.com");

        //设置加载本地资源
        settings.setAllowFileAccess(true);
        settings.setAllowContentAccess(true);

        webView.loadUrl("file:///android_asset/index.html");
    }


    public void btnClick(View view) {
        //点击button调用Javascript的forAndroidData()方法
        webView.loadUrl("javascript:forAndroidData('世界，你好啊!')");

    }

    //TODO WebViewClient
      //1、可以防止URL通过手机自带的浏览器进行加载
      //2、根据逻辑去拦截网址
     //3、页面的加载完成
    class MyWebViewClient extends WebViewClient{

        //注意  webView调用loadUrl(),不会调用此方法
        //当加载内部跳转的URL时，第一时间调用此方法 可以给咋们一个机会 可以去拦截要加载的URL
        //如果写成false 和 super代表不拦截
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            Log.e("TAG","====="+url);

            return super.shouldOverrideUrlLoading( view, url );
        }

        //页面开始加载
        /*
           参数3返回的图标
         */
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted( view, url, favicon );
        }

        //页面结束加载
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished( view, url );
        }
    }


    //通过设置WebChromeClient可以获取一些方法
    //这些方法可以获取当前页面的加载进度、logo、 title
    class MyChromeClient extends WebChromeClient{


        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            super.onProgressChanged( view, newProgress );

            Log.e("tag","onProgressChanged"+newProgress); //当前进度
        }

        @Override
        public void onReceivedTitle(WebView view, String title) {
            super.onReceivedTitle( view, title );

            if(!TextUtils.isEmpty(title)){

                //Activity的方法 设置ActionBar的title的值
                setTitle(title);
            }
        }


        //当前网页的Logo
        @Override
        public void onReceivedIcon(WebView view, Bitmap icon) {
            super.onReceivedIcon( view, icon );

            if(icon!=null){

                imageView.setImageBitmap(icon);
            }
        }
    }

    //返回键监听
    @Override
    public void onBackPressed() {

         //TODO 如果调用WebView加载上一个页面  那么必须要判断是否存在上一个页面
          //通过 加载下一个页面 也需判断下一个页面是否存在

//        webView.canGoBack(); //是否存在上一个页面
//
//        webView.canGoForward(); //是否存在下一个页面
//
//        webView.goBack(); //加载上一个页面
//
//        webView.goForward();//加载下一个页面

        if(webView.canGoBack()){

            webView.goBack();

        }else{

            finish(); //关闭当前页面
        }
    }
}
